<?php

namespace App\Utils;

class CacheKey
{
    /**
     * 获取邮箱验证码的缓存键
     * @param string $email 邮箱
     * 
     * @return string
     */
    public static function emailVerifyCode(string $email, string $type = 'login'): string
    {
        return 'email:verify:' . $email . ':' . $type;
    }

    /**
     * 获取邮件发送限制的缓存键（邮箱）
     * @param string $type 邮件类型
     * @param string $email 邮箱
     * @return string
     */
    public static function emailSendLimit(string $type, string $email): string
    {
        return sprintf('email:limit:%s:%s:%s', $type, $email, date('Ymd'));
    }

    /**
     * 获取邮件发送限制的缓存键（IP）
     * @param string $type 邮件类型
     * @param string $ip IP地址
     * @return string
     */
    public static function ipSendLimit(string $type, string $ip): string
    {
        return sprintf('ip:limit:%s:%s:%s', $type, $ip, date('Ymd'));
    }

    /**
     * 获取短信发送限制的缓存键（手机号）
     * @param string $type 短信类型
     * @param string $phone 手机号
     * @return string
     */
    public static function smsSendLimitPhone(string $type, string $phone): string
    {
        return sprintf('sms:limit:%s:phone:%s:%s', $type, $phone, date('Ymd'));
    }

    /**
     * 获取短信发送限制的缓存键（IP）
     * @param string $type 短信类型
     * @param string $ip IP地址
     * @return string
     */
    public static function smsSendLimitIp(string $type, string $ip): string
    {
        return sprintf('sms:limit:%s:ip:%s:%s', $type, $ip, date('Ymd'));
    }

    /**
     * 获取短信验证码的缓存键
     * @param string $phone 手机号
     * @param string $type 短信类型
     * @return string
     */
    public static function smsVerifyCode(string $phone, string $type): string
    {
        return sprintf('sms:code:%s:%s', $phone, $type);
    }

    /**
     * 获取短信发送间隔的缓存键
     * @param string $phone 手机号
     * @return string
     */
    public static function smsSendInterval(string $phone): string
    {
        return sprintf('sms:interval:%s', $phone);
    }
}